package com.wei.czz.framework.admin.service;

import com.wei.czz.framework.admin.entity.DeptUserEntity;

import java.util.List;


/**
 * Created by IntelliJ IDEA.
 *
 * @author wei
 * date: 2022-08-19 15:52:59
 * className: DeptUserService 部门与用户操作服务接口
 * version: 1.0
 * description:
 */
public interface DeptUserService {

    /**
     * 保存部门与用户关联对象操作
     * @param deptUser 部门与用户关联对象
     */
    void saveOrEdit(DeptUserEntity deptUser);

    /**
     * 批量添加部门与用户关联数据操作
     * @param deptUserList 部门与用户关联对象列表
     */
    void batchSave(List<DeptUserEntity> deptUserList);

    /**
     * 获取部门关联用户对象操作
     * @param userId 用户主键
     * @param deptId 部门主键
     * @return 获取部门关联用户对象
     */
    DeptUserEntity getDeptUser(Long userId, Long deptId);

    /**
     * 获取部门关联用户操作
     * @param deptIdList 部门主键列表
     * @param userIdList 用户主键列表
     * @return 部门与用户关联对象列表
     */
    List<DeptUserEntity> findList(List<Long> deptIdList, List<Long> userIdList);

    /**
     * 获取部门主管操作
     * 根据部门主键，查询部门主管所属用户数据
     * @param deptId 部门主键
     * @return 部门主管用户数据
     */
    DeptUserEntity getDeptLeader(Long deptId);

    /**
     * 获取部门关联用户数量操作
     * @param deptIdList 部门主键列表
     * @return 用户数量
     */
    Long getDeptUserCount(List<Long> deptIdList);

    /**
     * 批量修改部门关联用户操作
     * @param deptUserList 部门关联用户对象列表
     */
    void batchUpdate(List<DeptUserEntity> deptUserList);

    /**
     * 设置部门主管操作
     * 根据用户主键和部门主键，将用户升级为部门主管
     * @param userId 用户主键
     * @param deptId 部门主键
     */
    void upDeptLeader(Long userId, Long deptId);

    /**
     * 解除部门主管操作
     * 根据部门主键和关联主键，解除部门的部门主管
     * @param userId 用户主键
     * @param deptId 部门主键
     */
    void deleteDeptLeader(Long userId, Long deptId);

    /**
     * 删除部门关联用户操作
     * @param deptIdList 部门主键列表
     * @param userIdList 用户主键列表
     */
    void deleteDeptUser(List<Long> deptIdList, List<Long> userIdList);

}

